Entity Framework Core (EF Core) হলো একটি ওপেন সোর্স ORM (Object-Relational Mapper) যা .NET অ্যাপ্লিকেশনগুলিতে ডাটাবেজ পরিচালনার জন্য ব্যবহৃত হয়। EF Core ডাটাবেজের সাথে কাজ করার জন্য ডাটাবেজের টেবিলগুলিকে ক্লাসে রূপান্তরিত করে এবং আপনার কোডের মাধ্যমে ডাটাবেজ অপারেশন পরিচালনা করতে সহায়তা করে। এটি LINQ (Language Integrated Query) ব্যবহার করে ডাটাবেজের সাথে কোডের মধ্যে যোগাযোগের সুবিধা দেয়।
EF Core এর মাধ্যমে আপনি ডাটাবেজ তৈরি, ডেটা প্রবাহ, ডেটা ম্যানিপুলেশন এবং ডাটাবেজ মাইগ্রেশন ইত্যাদি কার্যক্রম খুব সহজে পরিচালনা করতে পারেন।
ASP.Net প্রজেক্টে Entity Framework Core ব্যবহার করতে নিচের ধাপগুলো অনুসরণ করতে হবে:
প্রথমে Entity Framework Core প্যাকেজ ইনস্টল করতে হবে। আপনি NuGet Package Manager অথবা .NET CLI ব্যবহার করে এটি ইনস্টল করতে পারেন।
.NET CLI ব্যবহার করে:
dotnet add package Microsoft.EntityFrameworkCore
আপনি যদি SQL Server ব্যবহার করতে চান, তাহলে Microsoft.EntityFrameworkCore.SqlServer
প্যাকেজও ইনস্টল করতে হবে:
dotnet add package Microsoft.EntityFrameworkCore.SqlServer
DbContext ক্লাস হলো EF Core এর মাধ্যমে ডাটাবেজের সাথে ইন্টারঅ্যাক্ট করার মূল ক্লাস। এতে আপনার ডাটাবেজের টেবিলগুলির DbSet প্রপার্টি থাকে যা টেবিলগুলিকে মডেল হিসেবে রূপান্তর করে।
এখানে একটি DbContext ক্লাসের উদাহরণ দেওয়া হলো:
public class ApplicationDbContext : DbContext
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options)
{
}
public DbSet<Product> Products { get; set; }
public DbSet<Customer> Customers { get; set; }
}
এখানে, Products
এবং Customers
হলো DbSet যা Product এবং Customer মডেল ক্লাসকে ডাটাবেজ টেবিল হিসেবে মান্য করে।
ডাটাবেজ টেবিলের জন্য মডেল ক্লাস তৈরি করতে হবে। এই ক্লাসগুলো হলো C# এর POCO (Plain Old CLR Object) ক্লাস যা ডাটাবেজের তথ্য ধারণ করে।
Product মডেল ক্লাসের উদাহরণ:
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
}
এখানে, Product ক্লাসের প্রপার্টি গুলো Products টেবিলের কলামের প্রতিনিধিত্ব করবে।
প্রজেক্টের Startup.cs
ফাইলে DbContext
কনফিগার করতে হবে যাতে এটি ডাটাবেজের সাথে সংযুক্ত হতে পারে।
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
}
এখানে UseSqlServer
মেথডটি SQL Server ডাটাবেজের সাথে সংযোগ করতে ব্যবহৃত হয় এবং DefaultConnection হলো appsettings.json ফাইল থেকে ডাটাবেজের সংযোগ স্ট্রিং।
appsettings.json ফাইলে ডাটাবেজ সংযোগ স্ট্রিং সংজ্ঞায়িত করতে হবে।
{
"ConnectionStrings": {
"DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=MyAppDb;Trusted_Connection=True;MultipleActiveResultSets=true"
}
}
এখানে DefaultConnection SQL Server এর সংযোগ স্ট্রিং নির্দেশ করে। আপনি যদি অন্য কোন ডাটাবেজ ব্যবহার করতে চান, যেমন SQLite বা PostgreSQL, তাহলে তার সংযোগ স্ট্রিং ব্যবহার করবেন।
EF Core ব্যবহার করে Create, Read, Update, এবং Delete (CRUD) অপারেশনগুলো খুব সহজে করা যায়।
ডাটাবেজে নতুন রেকর্ড ইনসার্ট করতে EF Core ব্যবহার করা হয়:
public class ProductService
{
private readonly ApplicationDbContext _context;
public ProductService(ApplicationDbContext context)
{
_context = context;
}
public void AddProduct(Product product)
{
_context.Products.Add(product);
_context.SaveChanges();
}
}
ডাটাবেজ থেকে ডেটা পড়তে:
public class ProductService
{
private readonly ApplicationDbContext _context;
public ProductService(ApplicationDbContext context)
{
_context = context;
}
public List<Product> GetAllProducts()
{
return _context.Products.ToList();
}
}
ডাটাবেজের রেকর্ড আপডেট করতে:
public void UpdateProduct(Product product)
{
_context.Products.Update(product);
_context.SaveChanges();
}
ডাটাবেজ থেকে রেকর্ড মুছতে:
public void DeleteProduct(int productId)
{
var product = _context.Products.Find(productId);
if (product != null)
{
_context.Products.Remove(product);
_context.SaveChanges();
}
}
ডাটাবেজ মাইগ্রেশন EF Core এর মাধ্যমে আপনার ডাটাবেজের স্কিমা আপডেট করা যায়।
dotnet ef migrations add InitialCreate
dotnet ef database update
এই কমান্ডটি আপনার মাইগ্রেশন ফাইল অনুযায়ী ডাটাবেজ স্কিমা আপডেট করবে।
Entity Framework Core (EF Core) ASP.Net অ্যাপ্লিকেশনগুলির জন্য একটি শক্তিশালী ORM টুল যা ডাটাবেজ পরিচালনা এবং ডাটাবেজে ডেটা প্রবাহ সহজ করে। এটি ডাটাবেজে CRUD (Create, Read, Update, Delete) অপারেশন করা, ডাটাবেজ স্কিমা মাইগ্রেশন পরিচালনা করা এবং LINQ এর মাধ্যমে ডেটার সাথে ইন্টারঅ্যাক্ট করা অত্যন্ত সহজ করে তোলে। EF Core সেটআপ করার পর, আপনি ডাটাবেজের সাথে সংযোগ স্থাপন, মডেল তৈরি, এবং মাইগ্রেশন পরিচালনা করে আপনার অ্যাপ্লিকেশনে ডাটাবেজ ইন্টিগ্রেশন সম্পন্ন করতে পারেন।
Entity Framework (EF) হলো একটি Object-Relational Mapping (ORM) ফ্রেমওয়ার্ক যা .NET অ্যাপ্লিকেশনগুলিতে ডেটাবেসের সঙ্গে কাজ করার জন্য ব্যবহৃত হয়। এটি ডেভেলপারদের রিলেশনাল ডেটাবেসে ডেটা সঞ্চালন করার জন্য C# কোড ব্যবহার করতে সাহায্য করে, SQL কোড লিখতে না হয়। EF ডেটাবেস টেবিলগুলিকে ক্লাস এবং রেকর্ডগুলিকে অবজেক্ট হিসেবে মডেল করে, যার ফলে ডেটাবেসের সঙ্গে ডেটা ইন্টারঅ্যাকশন অনেক সহজ হয়ে যায়।
EF মূলত ডেটাবেস অপারেশনগুলি যেমন CRUD (Create, Read, Update, Delete) সহজ করে দেয়। EF ডেভেলপারদের কোড-ফার্স্ট, ডেটাবেস-ফার্স্ট, অথবা মডেল-ফার্স্ট অ্যাপ্রোচ ব্যবহার করতে দেয় ডেটাবেস তৈরি এবং পরিচালনা করার জন্য।
Entity Framework এ তিনটি প্রধান প্রকারভেদ রয়েছে:
EF Core হলো EF এর আধুনিক, হালনাগাদ এবং ক্রস-প্ল্যাটফর্ম সংস্করণ। এটি ASP.Net Core অ্যাপ্লিকেশনগুলির সঙ্গে পুরোপুরি ইন্টিগ্রেটেড এবং ডেটাবেস পরিচালনার জন্য একটি হালকা ও দ্রুত সংস্করণ। EF Core অ্যাপ্লিকেশনগুলির জন্য ব্যবহার করা হয় যেগুলোতে প্ল্যাটফর্ম ইন্ডিপেনডেন্ট কাজ করা প্রয়োজন।
EF 6 হলো Entity Framework এর পূর্ববর্তী সংস্করণ, যা .NET Framework অ্যাপ্লিকেশনের জন্য ব্যবহৃত হয়। যদিও EF Core অধিকতর জনপ্রিয় এবং আধুনিক, EF 6 এখনও অনেক বড় অ্যাপ্লিকেশন এবং লেজেসি সিস্টেমে ব্যবহৃত হচ্ছে।
EF তিনটি প্রধান অ্যাপ্রোচে কাজ করতে পারে:
EF Core বেশ কিছু নতুন ফিচার নিয়ে এসেছে যা EF 6 এর তুলনায় আরও শক্তিশালী এবং দ্রুত। এর কিছু গুরুত্বপূর্ণ বৈশিষ্ট্য হলো:
EF কোড-ফার্স্ট অ্যাপ্রোচে ডেটাবেসের সঙ্গে CRUD অপারেশন সহজভাবে পরিচালনা করা যায়:
Create: নতুন রেকর্ড তৈরি করা।
var product = new Product { Name = "Laptop", Price = 1500 };
dbContext.Products.Add(product);
dbContext.SaveChanges();
Read: ডেটাবেস থেকে রেকর্ড পড়া।
var product = dbContext.Products.FirstOrDefault(p => p.Name == "Laptop");
Update: বিদ্যমান রেকর্ড আপডেট করা।
var product = dbContext.Products.FirstOrDefault(p => p.Id == 1);
product.Price = 1200;
dbContext.SaveChanges();
Delete: রেকর্ড মুছে ফেলা।
var product = dbContext.Products.FirstOrDefault(p => p.Id == 1);
dbContext.Products.Remove(product);
dbContext.SaveChanges();
EF ডেটাবেস মডেলিংয়ের জন্য দুইটি প্রধান পদ্ধতি ব্যবহার করতে পারে:
EF কোড-ফার্স্ট ব্যবহার করলে, ডেটাবেস স্কিমা পরিবর্তনের জন্য Migrations ব্যবহার করা হয়। মাইগ্রেশন কোড পরিবর্তনগুলো ডেটাবেসে আপডেট করতে সাহায্য করে।
মাইগ্রেশন তৈরি:
dotnet ef migrations add InitialCreate
মাইগ্রেশন আপডেট:
dotnet ef database update
Entity Framework (EF) হলো একটি শক্তিশালী ORM ফ্রেমওয়ার্ক যা .NET ডেভেলপারদের ডেটাবেসের সঙ্গে ডাইনামিকভাবে কাজ করার সহজ উপায় প্রদান করে। EF এর সাহায্যে ডেটাবেস ম্যানিপুলেশন যেমন CRUD অপারেশন, কুয়েরি লেখার কাজ আরও দ্রুত এবং সিম্পল হয়ে যায়। EF Core এর আধুনিক সংস্করণটি ক্রস-প্ল্যাটফর্ম সমর্থন, উন্নত পারফরম্যান্স এবং আরও বেশি ডেটাবেস সমর্থন নিয়ে আসে, যা আধুনিক অ্যাপ্লিকেশনের জন্য উপযোগী।
ASP.Net এ Entity Framework (EF) ব্যবহারের সময় ডেটাবেস মডেল তৈরি করার দুটি প্রধান পদ্ধতি রয়েছে: Code First এবং Database First। প্রতিটি পদ্ধতি তার নিজস্ব সুবিধা এবং বৈশিষ্ট্য নিয়ে আসে, এবং আপনাকে আপনার প্রজেক্টের প্রয়োজন অনুসারে একটি নির্বাচন করতে হয়।
Code First পদ্ধতিতে, আপনি প্রথমে C# ক্লাস (মডেল) তৈরি করেন এবং পরে Entity Framework ব্যবহার করে সেই ক্লাসের ভিত্তিতে ডেটাবেস তৈরি করা হয়। এই পদ্ধতিতে আপনি আপনার মডেল ক্লাসে কোড লিখে ডেটাবেসের কাঠামো নির্ধারণ করেন এবং EF তার উপর ভিত্তি করে ডেটাবেস তৈরি করে।
ক্লাস তৈরি করা:
Product
ক্লাস:public class Product
{
public int ProductId { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
}
DbContext ক্লাস তৈরি করা:
DbContext
ক্লাস তৈরি করতে হবে।public class ApplicationDbContext : DbContext
{
public DbSet<Product> Products { get; set; }
}
ডেটাবেস মাইগ্রেশন:
Add-Migration InitialCreate
Update-Database
Database First পদ্ধতিতে, আপনি প্রথমে একটি ডেটাবেস তৈরি করেন এবং পরে Entity Framework ব্যবহার করে সেই ডেটাবেস থেকে C# ক্লাস জেনারেট করেন। এই পদ্ধতিতে ডেটাবেস আগেই ডিজাইন করা থাকে এবং আপনি সেই ডেটাবেসের কাঠামোকে ব্যবহার করে কোড তৈরি করেন।
ADO.NET Entity Data Model
ব্যবহার করে EF Designer বা Code First টুলের মাধ্যমে ডেটাবেসের কাঠামো অনুযায়ী ক্লাস তৈরি করা হয়।ডেটাবেস থেকে ক্লাস জেনারেট করার জন্য নির্দেশনা:
উদাহরণ:
Add -> New Item -> ADO.NET Entity Data Model -> Generate from Database
DbContext
ব্যবহার করে ডেটাবেসের সাথে কানেকশন স্থাপন করা হয়।বৈশিষ্ট্য | Code First | Database First |
---|---|---|
ডেটাবেস তৈরি | কোডের মাধ্যমে ডেটাবেস তৈরি হয় | ডেটাবেস আগে থেকেই তৈরি থাকে |
কোডের কাঠামো | ডেটাবেসের কাঠামো কোড অনুযায়ী তৈরি হয় | ডেটাবেসের কাঠামো কোড অনুযায়ী তৈরি হয় |
ফ্লেক্সিবিলিটি | কোডে পরিবর্তন করলে ডেটাবেস আপডেট করা যায় | ডেটাবেসে পরিবর্তন করলে কোড আপডেট করতে হয় |
মাইগ্রেশন | মাইগ্রেশন ব্যবহার করে ডেটাবেস পরিবর্তন করা যায় | মাইগ্রেশন ব্যবহার করতে হয় না, তবে ক্লাস জেনারেট করতে হয় |
উপযুক্ত পদ্ধতি | নতুন অ্যাপ্লিকেশন অথবা মডেল পরিবর্তনের জন্য উপযোগী | ডেটাবেসে প্রাথমিক ডিজাইন করা থাকলে উপযোগী |
Code First এবং Database First দুটি পদ্ধতিই Entity Framework-এ ডেটাবেস তৈরি ও পরিচালনার জন্য ব্যবহৃত হয়। Code First পদ্ধতিতে কোডের ভিত্তিতে ডেটাবেস তৈরি করা হয়, এবং Database First পদ্ধতিতে আগে থেকেই তৈরি ডেটাবেস থেকে ক্লাস তৈরি করা হয়। প্রতিটি পদ্ধতির নিজস্ব সুবিধা এবং প্রযোজ্যতা রয়েছে, এবং এটি আপনার প্রজেক্টের প্রয়োজন অনুযায়ী নির্বাচন করা উচিত।
ASP.Net অ্যাপ্লিকেশনে মডেল হল একটি ক্লাস যা ডাটাবেজ টেবিলের সাথে সম্পর্কিত ডেটা ধারণ করে। Entity Framework Core (EF Core) ব্যবহার করে আপনি মডেল তৈরি করতে পারেন এবং তা ডাটাবেজ টেবিলের সাথে ম্যাপ করতে পারেন। EF Core একটি ORM (Object Relational Mapping) ফ্রেমওয়ার্ক, যা আপনার C# মডেল ক্লাসগুলোকে ডাটাবেজ টেবিলের সাথে সংযুক্ত করে।
এই টিউটোরিয়ালে আমরা মডেল তৈরি, ডাটাবেজের সাথে ম্যাপিং এবং ডাটাবেজে CRUD (Create, Read, Update, Delete) অপারেশন কীভাবে করতে হয় তা আলোচনা করব।
প্রথমে, মডেল ক্লাস তৈরি করতে হয় যা ডাটাবেজ টেবিলের প্রতিনিধিত্ব করবে।
ধরা যাক, আমাদের একটি Product নামের মডেল ক্লাস তৈরি করতে হবে যা একটি প্রোডাক্টের নাম, দাম এবং স্টক কোয়ান্টিটি ধারণ করবে।
public class Product
{
public int Id { get; set; } // Primary Key
public string Name { get; set; } // Product Name
public decimal Price { get; set; } // Product Price
public int Stock { get; set; } // Product Stock Quantity
}
এখানে Product
ক্লাসটি একটি প্রোডাক্ট টেবিলের প্রতিনিধিত্ব করছে। Id
ফিল্ডটি ডাটাবেজের প্রাইমারি কি হিসেবে ব্যবহৃত হবে।
ডাটাবেজের সাথে যোগাযোগ করতে DbContext ক্লাস ব্যবহার করা হয়। এটি EF Core এর মূল অংশ, যা ডাটাবেজের সাথে CRUD অপারেশন পরিচালনা করে।
ApplicationDbContext
ক্লাসে ডাটাবেজের সাথে সংযোগ স্থাপন করা হয়।
using Microsoft.EntityFrameworkCore;
public class ApplicationDbContext : DbContext
{
public DbSet<Product> Products { get; set; }
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options) { }
}
এখানে, DbSet<Product>
ফিল্ডটি Product
মডেল ক্লাসের টেবিলের প্রতিনিধিত্ব করছে। যখন EF Core কনফিগারেশন করা হয়, তখন এই DbSet টেবিলের রেকর্ডগুলোর সাথে CRUD অপারেশন পরিচালনা করবে।
ডাটাবেজ কনফিগার করার জন্য প্রথমে Connection String সেট করতে হবে এবং পরে ডাটাবেজ তৈরি করতে Migration কমান্ড ব্যবহার করা হবে।
appsettings.json
ফাইলে ডাটাবেজ কনফিগারেশন এবং সংযোগ সেট করুন।
{
"ConnectionStrings": {
"DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=ProductDb;Trusted_Connection=True;MultipleActiveResultSets=true"
}
}
এখানে, DefaultConnection
এ localdb
ব্যবহার করা হয়েছে, তবে আপনি আপনার ডাটাবেজ সার্ভার এবং নাম পরিবর্তন করতে পারেন।
Startup.cs
ফাইলে DbContext
কনফিগার করুন যাতে ডাটাবেজের সাথে সংযোগ স্থাপন করা যায়।
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
}
এখানে, UseSqlServer
মেথডের মাধ্যমে SQL Server ডাটাবেজ ব্যবহার করা হচ্ছে।
এখন, Migration তৈরি করতে হবে যাতে আপনার মডেল ক্লাসকে ডাটাবেজের টেবিলের সাথে ম্যাপ করা যায়। টার্মিনাল বা প্যাকেজ ম্যানেজার কনসোল থেকে নিম্নলিখিত কমান্ড চালান:
dotnet ef migrations add InitialCreate
dotnet ef database update
এখানে, প্রথম কমান্ডটি ডাটাবেজের জন্য একটি মাইগ্রেশন তৈরি করবে এবং দ্বিতীয় কমান্ডটি ডাটাবেজে মাইগ্রেশন চালিয়ে টেবিল তৈরি করবে।
ডাটাবেজে নতুন রেকর্ড ইনসার্ট করতে Add
মেথড ব্যবহার করা হয়।
public class ProductController : Controller
{
private readonly ApplicationDbContext _context;
public ProductController(ApplicationDbContext context)
{
_context = context;
}
[HttpPost]
public IActionResult Create(Product product)
{
if (ModelState.IsValid)
{
_context.Add(product);
_context.SaveChanges(); // ডাটাবেজে সংরক্ষণ
return RedirectToAction(nameof(Index));
}
return View(product);
}
}
এখানে, _context.Add(product) ব্যবহার করে নতুন প্রোডাক্ট ডাটাবেজে ইনসার্ট করা হচ্ছে।
ডাটাবেজ থেকে ডেটা পড়তে Find
বা ToList
মেথড ব্যবহার করা হয়।
public IActionResult Index()
{
var products = _context.Products.ToList(); // সমস্ত প্রোডাক্ট নিয়ে আসা
return View(products);
}
এখানে _context.Products.ToList() ব্যবহার করে সমস্ত প্রোডাক্টগুলো ডাটাবেজ থেকে নিয়ে আসা হচ্ছে।
ডেটা আপডেট করতে Update মেথড ব্যবহার করা হয়।
[HttpPost]
public IActionResult Edit(int id, Product product)
{
if (id != product.Id)
{
return NotFound();
}
if (ModelState.IsValid)
{
_context.Update(product); // প্রোডাক্ট আপডেট করা
_context.SaveChanges();
return RedirectToAction(nameof(Index));
}
return View(product);
}
এখানে, _context.Update(product) ব্যবহার করে প্রোডাক্টের ডেটা আপডেট করা হচ্ছে।
ডেটা মুছে ফেলতে Remove মেথড ব্যবহার করা হয়।
public IActionResult Delete(int id)
{
var product = _context.Products.Find(id); // ডাটাবেজ থেকে প্রোডাক্ট খুঁজে বের করা
if (product == null)
{
return NotFound();
}
_context.Products.Remove(product); // প্রোডাক্ট মুছে ফেলা
_context.SaveChanges();
return RedirectToAction(nameof(Index));
}
এখানে, _context.Products.Remove(product) ব্যবহার করে প্রোডাক্ট মুছে ফেলা হচ্ছে।
ASP.Net MVC অ্যাপ্লিকেশনে Entity Framework Core ব্যবহার করে মডেল তৈরি করা এবং ডাটাবেজের সাথে ম্যাপিং করা খুবই সহজ। মডেল ক্লাসে ডেটা কনফিগারেশন এবং DbContext
এর মাধ্যমে CRUD অপারেশন করা যায়। EF Core এর Migration ফিচার ডাটাবেজ টেবিলগুলি তৈরি এবং আপডেট করতে সাহায্য করে।
LINQ (Language Integrated Query) হল একটি শক্তিশালী ফিচার যা C# এবং .NET ফ্রেমওয়ার্কে ডেটা অনুসন্ধান এবং প্রক্রিয়া করার জন্য ব্যবহৃত হয়। LINQ ব্যবহার করে, ডেভেলপাররা ডেটাবেস, XML, কলেকশন বা অন্য যেকোনো ডেটা সোর্স থেকে ডেটা সহজে এবং কার্যকরীভাবে প্রশ্ন করতে পারেন।
LINQ কোডে SQL-এর মতো কোড লেখার সুবিধা প্রদান করে, তবে এটি C# বা VB.NET এর মধ্যে ইনলাইন কোড হিসেবে ব্যবহৃত হয়। LINQ ব্যবহার করে, ডেটা সংগ্রহ এবং প্রক্রিয়া করার সময় টাইপ সেফ কোড লেখা সম্ভব হয়, যা কম্বাইন করা যায় অন্যান্য C# কোডের সাথে।
LINQ, C# ভাষার অংশ হিসেবে কাজ করে এবং এটি Query (অনুসন্ধান) কাজগুলোকে খুব সহজ এবং কোড লেখার সময়ই টেস্ট করতে দেয়। LINQ সাধারণত IEnumerable বা IQueryable ইন্টারফেসের সাথে কাজ করে, যা ডেটার উপর বিভিন্ন ধরনের কুয়েরি অপারেশন যেমন: Select
, Where
, OrderBy
, GroupBy
প্রভৃতি প্রয়োগ করতে সহায়তা করে।
LINQ সাধারণত দুটি পদ্ধতিতে ব্যবহার করা হয়:
এটি LINQ এর সাধারণ পদ্ধতি যেখানে আপনি method chaining এর মাধ্যমে বিভিন্ন অপারেশন একত্রে ব্যবহার করতে পারেন।
using System;
using System.Linq;
using System.Collections.Generic;
public class Program
{
public static void Main()
{
// একটি sample collection
List<int> numbers = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
// LINQ Method Syntax ব্যবহার করে সব সংখ্যার মধ্যে even সংখ্যা বের করা
var evenNumbers = numbers.Where(n => n % 2 == 0).ToList();
Console.WriteLine("Even Numbers: ");
foreach (var number in evenNumbers)
{
Console.WriteLine(number);
}
}
}
এখানে Where
মেথডটি numbers
কলেকশনের মধ্যে এমন সংখ্যাগুলো বের করে যেগুলি even (যা ২ দিয়ে বিভাজ্য)। ToList()
মেথডটি এটি একটি List এ রূপান্তরিত করে।
Query Syntax প্রায় SQL এর মতো লাগে এবং এটি LINQ-এর একটি declarative শৈলী। LINQ Query Syntax C#-এ ডেটা অনুসন্ধানের জন্য একটি SQL-এর মতো স্টাইল তৈরি করে।
using System;
using System.Linq;
using System.Collections.Generic;
public class Program
{
public static void Main()
{
// একটি sample collection
List<int> numbers = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
// LINQ Query Syntax ব্যবহার করে সব সংখ্যার মধ্যে even সংখ্যা বের করা
var evenNumbers = from n in numbers
where n % 2 == 0
select n;
Console.WriteLine("Even Numbers: ");
foreach (var number in evenNumbers)
{
Console.WriteLine(number);
}
}
}
এখানে from
, where
, এবং select
কীওয়ার্ডগুলোর মাধ্যমে SQL-এর মতো স্টাইলের কোড ব্যবহার করা হয়েছে।
LINQ-কে ডেটাবেসের সাথে ইন্টিগ্রেট করাও সম্ভব, এবং এটি খুবই শক্তিশালী। LINQ-to-SQL এবং LINQ-to-Entities ব্যবহারের মাধ্যমে আপনি SQL কোডের মতো LINQ কোড লিখে ডেটাবেসের সাথে কাজ করতে পারেন।
using System;
using System.Linq;
public class Program
{
public static void Main()
{
using (var context = new MyDatabaseContext())
{
// LINQ-to-SQL ব্যবহার করে ডেটাবেসের সকল records নিয়ে আসা
var query = from p in context.Products
where p.Price > 100
select p;
foreach (var product in query)
{
Console.WriteLine($"Product Name: {product.Name}, Price: {product.Price}");
}
}
}
}
এখানে MyDatabaseContext
একটি Entity Framework DbContext যা ডেটাবেসের সাথে সংযুক্ত। LINQ কোড ডেটাবেস থেকে Products টেবিলের সব রেকর্ড বের করে, যেখানে পণ্যের মূল্য ১০০-এর বেশি।
Where: নির্দিষ্ট শর্তের উপর ভিত্তি করে ডেটা ফিল্টার করতে ব্যবহৃত হয়।
var result = numbers.Where(n => n > 5);
Select: ডেটার একটি নির্দিষ্ট অংশ নির্বাচন করতে ব্যবহৃত হয়।
var names = people.Select(p => p.Name);
OrderBy: ডেটাকে একটি নির্দিষ্ট অর্ডারে সাজাতে ব্যবহৃত হয়।
var orderedNumbers = numbers.OrderBy(n => n);
GroupBy: ডেটাকে গ্রুপ করতে ব্যবহৃত হয়।
var groupedNumbers = numbers.GroupBy(n => n % 2 == 0);
Join: দুটি ডেটাসেটের মধ্যে যোগ করতে ব্যবহৃত হয়।
var result = from order in orders
join product in products on order.ProductId equals product.Id
select new { order.OrderId, product.Name };
LINQ-এর সাহায্যে আপনি আপনার অ্যাপ্লিকেশনটির ডেটা প্রক্রিয়াকরণ আরও কার্যকরী, সহজ এবং দ্রুত করতে পারবেন।
CRUD অপারেশনস (Create, Read, Update, Delete) হল ডেটাবেস ম্যানেজমেন্ট সিস্টেমের মৌলিক কার্যক্রম, যা ডেটাবেসে ডেটা তৈরি, পড়া, আপডেট করা এবং মুছে ফেলার কাজ করে। ASP.Net অ্যাপ্লিকেশনে CRUD অপারেশনগুলো সাধারণত Entity Framework (EF) ব্যবহার করে বাস্তবায়িত করা হয়।
এখানে ASP.Net Core MVC অ্যাপ্লিকেশন ব্যবহার করে CRUD অপারেশনগুলো কিভাবে করা যায় তা ব্যাখ্যা করা হলো।
Create অপারেশন নতুন ডেটা রেকর্ড তৈরি করতে ব্যবহৃত হয়। একটি ফর্মের মাধ্যমে ব্যবহারকারী ডেটা ইনপুট করে এবং তা ডাটাবেসে সেভ করা হয়।
public class ProductController : Controller
{
private readonly ApplicationDbContext _context;
public ProductController(ApplicationDbContext context)
{
_context = context;
}
// GET: Product/Create
public IActionResult Create()
{
return View();
}
// POST: Product/Create
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Create([Bind("Id,Name,Price")] Product product)
{
if (ModelState.IsValid)
{
_context.Add(product); // Add new product to the context
await _context.SaveChangesAsync(); // Save changes to the database
return RedirectToAction(nameof(Index)); // Redirect to the Index action
}
return View(product);
}
}
@model Product
<h2>Create Product</h2>
<form asp-action="Create" method="post">
<div class="form-group">
<label asp-for="Name"></label>
<input asp-for="Name" class="form-control" />
</div>
<div class="form-group">
<label asp-for="Price"></label>
<input asp-for="Price" class="form-control" />
</div>
<button type="submit" class="btn btn-primary">Create</button>
</form>
Read অপারেশন ব্যবহারকারীকে ডেটাবেস থেকে ডেটা দেখানোর জন্য ব্যবহৃত হয়। সাধারণত Index অ্যাকশনে ডেটা রিটার্ন করা হয়।
public async Task<IActionResult> Index()
{
var products = await _context.Products.ToListAsync(); // Fetch all products from the database
return View(products);
}
@model IEnumerable<Product>
<h2>Product List</h2>
<table class="table">
<thead>
<tr>
<th>Name</th>
<th>Price</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
@foreach (var product in Model)
{
<tr>
<td>@product.Name</td>
<td>@product.Price</td>
<td>
<a href="@Url.Action("Edit", new { id = product.Id })">Edit</a> |
<a href="@Url.Action("Delete", new { id = product.Id })">Delete</a>
</td>
</tr>
}
</tbody>
</table>
Update অপারেশন ব্যবহারকারীর ইনপুটের মাধ্যমে ডেটাবেসে থাকা একটি রেকর্ড পরিবর্তন করতে ব্যবহৃত হয়।
// GET: Product/Edit/5
public async Task<IActionResult> Edit(int? id)
{
if (id == null)
{
return NotFound();
}
var product = await _context.Products.FindAsync(id); // Find the product by id
if (product == null)
{
return NotFound();
}
return View(product);
}
// POST: Product/Edit/5
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Edit(int id, [Bind("Id,Name,Price")] Product product)
{
if (id != product.Id)
{
return NotFound();
}
if (ModelState.IsValid)
{
try
{
_context.Update(product); // Update the product in the context
await _context.SaveChangesAsync(); // Save changes to the database
}
catch (DbUpdateConcurrencyException)
{
if (!ProductExists(product.Id))
{
return NotFound();
}
else
{
throw;
}
}
return RedirectToAction(nameof(Index)); // Redirect to Index page
}
return View(product);
}
@model Product
<h2>Edit Product</h2>
<form asp-action="Edit">
<div class="form-group">
<label asp-for="Name"></label>
<input asp-for="Name" class="form-control" />
</div>
<div class="form-group">
<label asp-for="Price"></label>
<input asp-for="Price" class="form-control" />
</div>
<button type="submit" class="btn btn-primary">Update</button>
</form>
Delete অপারেশন ব্যবহারকারীর থেকে একটি নিশ্চিতকরণের পর ডেটাবেস থেকে একটি রেকর্ড মুছে ফেলে।
// GET: Product/Delete/5
public async Task<IActionResult> Delete(int? id)
{
if (id == null)
{
return NotFound();
}
var product = await _context.Products
.FirstOrDefaultAsync(m => m.Id == id); // Find the product by id
if (product == null)
{
return NotFound();
}
return View(product);
}
// POST: Product/Delete/5
[HttpPost, ActionName("Delete")]
[ValidateAntiForgeryToken]
public async Task<IActionResult> DeleteConfirmed(int id)
{
var product = await _context.Products.FindAsync(id); // Find the product
_context.Products.Remove(product); // Remove the product
await _context.SaveChangesAsync(); // Save changes to the database
return RedirectToAction(nameof(Index)); // Redirect to Index page
}
@model Product
<h2>Delete Product</h2>
<h3>Are you sure you want to delete this product?</h3>
<div>
<h4>@Model.Name</h4>
<p>Price: @Model.Price</p>
</div>
<form asp-action="DeleteConfirmed">
<button type="submit" class="btn btn-danger">Delete</button>
<a href="@Url.Action("Index")" class="btn btn-secondary">Cancel</a>
</form>
ASP.Net Core MVC অ্যাপ্লিকেশনে CRUD অপারেশনগুলি খুব সহজেই Entity Framework Core এর মাধ্যমে বাস্তবায়ন করা যায়। এই প্রক্রিয়াটি Create, Read, Update, এবং Delete অপারেশনগুলি পরিচালনা করতে সাহায্য করে, যা ডেটাবেসে রেকর্ড সংরক্ষণ, প্রদর্শন, পরিবর্তন, এবং মুছে ফেলার কাজ করে।
ASP.Net Core অ্যাপ্লিকেশনগুলিতে ডাটাবেসের সাথে কাজ করার জন্য Entity Framework Core ব্যবহৃত হয়। মাইগ্রেশন এবং ডাটাবেজ আপডেট হলো ডাটাবেস স্কিমা (schema) পরিবর্তন এবং পরিচালনার জন্য গুরুত্বপূর্ণ পদক্ষেপ। Entity Framework Core ব্যবহার করে আপনি ডাটাবেসের কাঠামো (schema) পরিবর্তন, নতুন টেবিল বা কলাম যোগ করা, এবং ডাটাবেস আপডেট করতে পারেন।
Entity Framework Core (EF Core) একটি ORM (Object-Relational Mapping) টুল, যা .NET অ্যাপ্লিকেশনগুলির জন্য ডাটাবেস অ্যাক্সেস সহজ করে। মাইগ্রেশন ব্যবহারের মাধ্যমে, আপনি ডাটাবেসের কাঠামোর পরিবর্তন বা আপডেট পরিচালনা করতে পারেন, এবং এই পরিবর্তনগুলি ডাটাবেসে ডাটাবেস স্কিমা হিসেবে বাস্তবায়িত হয়।
মাইগ্রেশন হল একটি পরিবর্তন যা আপনার ডাটাবেসের কাঠামো (যেমন টেবিল, কলাম) পরিবর্তন করে, এবং এটি EF Core ব্যবহার করে স্বয়ংক্রিয়ভাবে তৈরি করা যায়।
DbContext
) ফাইল এবং মডেল ক্লাসগুলো তৈরি করতে হবে।মাইগ্রেশন কমান্ড টাইপ করুন:
Add-Migration <MigrationName>
উদাহরণ:
Add-Migration InitialCreate
এখানে, InitialCreate
হলো মাইগ্রেশনের নাম। আপনি এই নামটি পরিবর্তন করে আপনার প্রোজেক্টের জন্য উপযুক্ত রাখতে পারেন।
Command Prompt বা Terminal থেকে আপনার প্রজেক্টের ডিরেক্টরিতে যান এবং নিচের কমান্ডটি চালান:
dotnet ef migrations add <MigrationName>
যখন আপনি Add-Migration কমান্ড চালাবেন, তখন একটি নতুন মাইগ্রেশন ফাইল তৈরি হবে, যা ডাটাবেসের কাঠামো পরিবর্তনের কোড ধারণ করবে। উদাহরণস্বরূপ:
public partial class InitialCreate : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "Products",
columns: table => new
{
Id = table.Column<int>(nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
Name = table.Column<string>(nullable: true),
Price = table.Column<decimal>(nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Products", x => x.Id);
});
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "Products");
}
}
এই কোডটি Products
নামক একটি টেবিল তৈরি করবে, যেখানে Id
, Name
, এবং Price
কলাম থাকবে।
একবার মাইগ্রেশন ফাইল তৈরি হয়ে গেলে, আপনাকে ডাটাবেস আপডেট করতে হবে যাতে মাইগ্রেশনটি ডাটাবেসে প্রতিফলিত হয়।
ডাটাবেস আপডেট করার জন্য নিচের কমান্ডটি চালান:
Update-Database
Command Prompt বা Terminal থেকে, ডাটাবেস আপডেট করতে নিচের কমান্ডটি চালান:
dotnet ef database update
এই কমান্ডটি ডাটাবেসে সমস্ত মাইগ্রেশন পরিবর্তন (যেমন নতুন টেবিল বা কলাম যোগ করা) প্রয়োগ করবে।
আপনি যদি জানতে চান যে কোন মাইগ্রেশনটি ইতোমধ্যে ডাটাবেসে প্রয়োগ হয়েছে, তবে আপনি নিচের কমান্ডটি ব্যবহার করতে পারেন:
NuGet Package Manager Console:
Get-Migration
.NET CLI:
dotnet ef migrations list
যদি আপনি কোনো মাইগ্রেশন বাতিল করতে চান, তবে আপনি Remove-Migration কমান্ড ব্যবহার করতে পারেন। তবে এটি শুধুমাত্র যদি মাইগ্রেশনটি এখনও ডাটাবেসে আপডেট না হয়ে থাকে তবেই কাজ করবে।
Remove-Migration
মাইগ্রেশন এবং ডাটাবেস আপডেটের মাধ্যমে, Entity Framework Core আপনার ডাটাবেস কাঠামো এবং অ্যাপ্লিকেশনের মধ্যে সুসংগততা বজায় রাখতে সহায়তা করে। মাইগ্রেশন ব্যবহার করে আপনি ডাটাবেসের পরিবর্তনগুলি পরিচালনা করতে পারেন এবং সহজেই ডাটাবেসের কাঠামো আপডেট করতে পারেন, যার ফলে অ্যাপ্লিকেশনটির রক্ষণাবেক্ষণ সহজ এবং স্কেলযোগ্য হয়।
Read more